// 检测子表和编辑页面的form表单的必填项
// 此函数由入职登记和信息维护两个页面使用
// 参数为页面的id

import {toast} from 'nc-lightapp-front';
import language from '../../../language';

export default function checkDataRequired(pageId = 600704, checkTables = []) {
    const {
        addPageTemplate,
        cardTable,
        form,
        meta: {
            getMeta,
            setMeta
        },
        photoRequired,
        imageData
    } = this.props;

    let template = getMeta();

    // 权益之计
    // 是因为检测的时候gridrelation会影响表格的必填项检测, 所以临时删除一下
    /**
     * 暂存gridrelation,cardTable checkTableRequired的时候会遍历所有的gridrelation
     * gridrelation中数据太乱，有的没有item，会导致检测报错
     * 所以在检测那个表格的时候，gridrelation中只保留该表格
     */
    let cache = JSON.parse(JSON.stringify(template['gridrelation']));

    return new Promise((resolve, reject) => {
        // 检测照片是必填
        if (photoRequired && !imageData) {
            toast({
                color: 'danger',
                content: language['hi6007-000294'] || '提示！请上传照片'
            });
            reject();
            return;
        }
        const formLists = ['bd_psndoc', 'hi_psnjob_h', 'hi_psnorg_h'];
        if (!form.isCheckNow(formLists)) {
            reject();
            return;
        }
        let tempRe = {}
        checkTables.forEach(key=>{
            tempRe[key] = cache[key]
        })
        template['gridrelation'] = tempRe;
        setMeta(template);
        let requiredFlag = cardTable.checkTableRequired(checkTables);

        if (!requiredFlag) {
            template['gridrelation'] = cache;
            setMeta(template);
            reject();
            return;
        }
        // 遍历所有的template里的配置，form表单采用isCheckNow方法
        // 表格采用checkTableRequired方法
        /*for (let key of addPageTemplate.areaCodeList) {
            if (addPageTemplate.allArea[key].moduletype === 'form') {
                if (!form.isCheckNow(key)) {
                    reject();
                    break;
                }
            } else if(checkTables.includes(key)) {
                // checkTableRequired方法会有阻塞性错误出现，
                // 为避免阻塞页面，采用try catch 捕获一下
                template['gridrelation'] = {
                    [key]: cache[key]
                };
                setMeta(template);
                try {
                    let requiredFlag = cardTable.checkTableRequired(key);
                    if (!requiredFlag) {
                        template['gridrelation'] = cache;
                        setMeta(template);
                        reject();
                        break;
                    }
                } catch (e) {
                }

            }
        }*/
        template['gridrelation'] = cache;
        setMeta(template);
        resolve();
    });
}
